//判断一个数是否是素数
function isPrime(num){
	for (var i = 2; i < num; i++) {
		if(num%i == 0){
			return false;
		}
	}
	return true;
}
//封装一个通过id名称获取html元素的方法
function $id(id){
	return document.getElementById(id);
} 
//封装随机数
//获取minNum-maxNum之间的随机数
function getRand(startNum,endNum){
	//return parseInt(Math.random()*(endNum-startNum+1)) + startNum;
	//return Math.floor(Math.random()*(endNum-startNum+1)) + startNum;
	return Math.round(Math.random()*(endNum-startNum)) + startNum;
}
//选择排序
function selectSort(arr){
	var temp = 0;
	for (var i = 0; i < arr.length-1; i++) {
		for(var j = i+1; j < arr.length; j++){ // 4 3 2 1
			if(arr[i] < arr[j]){
				temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
		}
	}
	return arr;
}
//冒泡排序
function bubbleSort(arr){
	var temp = 0;
	for (var i = 0; i < arr.length-1; i++) {
		for(var j = 0; j<arr.length-1-i; j++){
			if(arr[j] < arr[j+1]){
				temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
	return arr;
}
//数组去重	
function norepeat(arr){
		var newArr = [];
		for(var i = 0; i<arr.length; i++){
			if(isInArr(newArr,arr[i]) == false){//说明了newArr这个数组里没有arr[i]这个这个值存在。
				newArr.push(arr[i]);
			}
		}
		return newArr;
	}
//判断一个数在数组中是否存在
function isInArr(arr,num){
		for (var i = 0; i < arr.length; i++) {
			if( num == arr[i] ){
				return true;
			}
		}
		return false;
	}
//获取十六进制随机颜色值
function getColor(){
	var color="#";
	var str = "0123456789abcdef";
	for(var i=0;i<6;i++){
		//获取0-15一个随机数，用来获取十六进制字符串str的对应值。
		var rand=getRand(1,15);
		color += str.charAt(rand);
	}
	return color;
}
//封装获取随机六位验证码
function getYZM(){
	var yzm = "";
	for(var i=0;i<6;i++){
		var rand=getRand(48,122);
		if((rand >= 58 && rand <= 64) || (rand >= 91 && rand <= 96)){
			i--;
		}else{
			//获取数字 大小写字母 的字符 作为验证码保存下来
			yzm+=String.fromCharCode(rand);
		}
	}
	return yzm;
}
//时间差
function timeDifferent(startTime,endTime){
	return (endTime.getTime()-startTime.getTime())/1000;
}
//计算n的阶乘
function jc(n){
	if(n==1||n==0){
		return 1;
	}
	return n*jc(n-1);
}
//跨浏览器兼容获取键盘事件对象的keyCode属性
function getkeyCode(){
	var e=e||event;
	return e.keyCode||e.which||e.charCode;
}
//把一个新节点添加到某个节点的后面
function insertAfter(newElement,targetElement){
	var pNode = targetElement.parentNode;
	if(pNode.lastElementChild === targetElement){
		//如果这个目标节点是它父节点的最后一个子节点，
		//可以把新的节点直接插入到父节点的最后就可以了
		pNode.appendChild(newElement);
	}else{
		//如果这个目标节点不是之父节点的最后一个子节点，
		//把新节点插入到它的下一个兄弟节点点的前面
		pNode.insertBefore(newElement,targetElement.nextElementSibling);
	}
}
//跨浏览器兼容获取浏览器与屏幕左边的距离
function getScreenX(){
	if(window.screenLeft==undefined){
		return window.screenX;
	}else{
		return window.screenLeft;
	}
}
//跨浏览器兼容获取浏览器与屏幕上边的距离
function getScreenY(){
	if(window.screenTop == undefined){
		return window.screenY;
	}else{
		return window.screenTop;
	} 
}
//个位数时间前加0;
function toDB(num){
	return num < 10 ? "0" + num : num;
}
//获取中文日期格式的日期
function dateToString(date){
		
	var str = "";
	//var date = new Date();//得到当前系统时间
	var week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
	
	var y = date.getFullYear();
	var m = date.getMonth()+1;
	var d = date.getDate();
	var w = date.getDay();
	var h = date.getHours();
	var M = date.getMinutes();
	var s = date.getSeconds();
	//2018年X月X日 00:00:00 星期X
	str += y + "年" + toDB(m) + "月" + toDB(d) + "日";
	str += " " + toDB(h) + ":" + toDB(M) + ":" + toDB(s);
	str += " " + week[w];
	
	
	return str;
	
}
//跨浏览器兼容获取事件对象的button属性值。
function getButton(){
	var e=e||event;
	if(event){
		return e.button;
	}else{
		switch(e.button){
			case 1:return 0;
			case 4:return 1;
			case 2:return 2;
		}
	}	
}
//跨浏览器兼容获取键盘事件对象的keyCode属性。
function getKeyCode(e){
	var e = e || event;
	return e.keyCode || e.which || e.charCode;
}

//中浏览器实现事件绑定
function addEvent(obj,event,callBack){
	if(obj.addEventListener){
		obj.addEventListener(event,callBack);
	}else{
		obj.attachEvent("on"+event,callBack);
	}
}
//cookie设置封装
function setCookie(uname,val,date){
	//alert(day)
	if(date){//传递了date,说明需要设置一个有效期。
		if(date instanceof Date){
			document.cookie = uname+"="+val+";expires="+date;
		}else{
			//如果日期不正确不作有期设置
			document.cookie = uname+"="+val;
		}
	}else{
		document.cookie = uname+"="+val;
	}
}
//获取cookie封装
function getCookie(key){
	//获取所有cookie信息
	var cookieStr = document.cookie;
	//userName=刘德华; age=35; aa=qqqqq; bb=tttt; cc=uuuuu
	//把cookie的值用split("; ");
	var arr = cookieStr.split("; ");
	for (var i = 0; i < arr.length; i++) {
		//age=35
		if(arr[i].split("=")[0] == key){
			return arr[i].split("=")[1];
		}
		
	}
	return "";
}
//删除cookie
function removeCookie(key){
	document.cookie = key + "=; expires=" + new Date(0);
}


	/*
	 * 9.0对多个属性同时运动无法全部到达目标值的bug进行了优化。
	 * 
	 */
	//这时候有瑕疵：当一个属性达到目标值后，会清除定时器，这时，其它的属性还没有达到目标值
	//定时器被一起清除了。
	//解决办法，在其中一个属性达到目标值，不做清除处理，在最后一个达到目标值时再作定时器的
	//清除处理。
	function animateBuffer(ele,obj,callback,speedTime){//funciton(){}
		if(speedTime == "slow"){
			speedTime = 100;
		}else if(speedTime == "quickly"){
			speedTime = 50;
		}else if(speedTime == "fast"){
			speedTime = 10;
		}else if(speedTime == undefined){
			speedTime = 20;
		}
		clearInterval(ele.timer);
		ele.timer = setInterval(function(){
			
			var flag = true;//控制所有属性都到目标值。
			
			var current = 0;
			/*
			 * obj = {
					height : "300",
					width : "500",
					opacity : 20
				}
			 */
			for(var attr in obj){
				if(attr == "opacity"){
					current = getStyle(ele,attr)*100;
				}else{
					current = parseInt(getStyle(ele,attr));
				}
				var speed = (obj[attr] - current)/10;
				speed = speed > 0 ?  Math.ceil(speed) : Math.floor(speed);
				
				if(Math.abs(obj[attr]-current) >= speed+0.1){//停止条件处理
					//如果属性还没有到目标值 
					//把flag变成false
					flag = false;
				}
				if(attr == "opacity"){
					current += speed;
					ele.style[attr] = current/100;
				}else if(attr == "zIndex"){
					ele.style[attr] = obj[attr];
				}else{
					ele.style[attr] = current + speed + "px";//
					//console.log(ele.style[attr],target - current,target,current,speed);
				}	
			}
			//当所有的属性都到了目标值后清除定时器
			if(flag){
				ele.style[attr] = obj[attr] + "px";
				clearInterval(ele.timer);
				if(callback){
					callback();
				}
			}
			
		},speedTime);
	}
	//跨浏览器获取外部css样式
	function getStyle(ele,attr){
		return window.getComputedStyle ? window.getComputedStyle(ele,false)[attr] : ele.currentStyle[attr];
	}
//跨浏览器实现碰撞
function isPZ(ele1,ele2){
	var e1Rect = getRect(ele1);
	var e2Rect = getRect(ele2);
	
	var e1L = e1Rect.left;
	var e1T = e1Rect.top;
	var e1R = e1Rect.right;
	var e1B = e1Rect.bottom;
	
	var e2L = e2Rect.left;
	var e2T = e2Rect.top;
	var e2R = e2Rect.right;
	var e2B = e2Rect.bottom;
	
	if( e1L > e2R || e1T > e2B || e1R < e2L || e1B < e2T){
		return false;
	}else{
		return true;
	}
}
//兼容IE7获取元素的rect
function getRect(ele){
	var rect = ele.getBoundingClientRect();
	var l = rect.left;
	var r = rect.right;
	var t = rect.top;
	var b = rect.bottom;
	
	var left = document.documentElement.clientLeft;
	var top = document.documentElement.clientTop;
	
	return {
		left : l - left,
		right : r - left,
		top : t - top,
		bottom : b - top
	}
}
//ajax
function params(obj){
		var arr = [];
		for(var item in obj){
			arr.push(item+"="+decodeURI(obj[item]));
		}
		return arr.join("&");
	}
function ajax(obj){
	var xhr=null;
	if(XMLHttpRequest){
		xhr=new XMLHttpRequest();
	}else{
		xhr=new ActiveXObject("Microsoft.XMLHTTP")
	}
	obj.url=obj.url+"?rand="+new Date().getTime();
	if(obj.method.toLowerCase()=="get"){
		if(obj.data){
			xhr.open("get",obj.url+"&"+params(obj.data));
		}else{
			xhr.open("get",obj.url);
		}
		xhr.send(null);
	}
	if(obj.method.toLowerCase()=="post"){
		xhr.open("post",obj.url);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		if(obj.data){
			xhr.send(params(obj.data));
		}else{
			xhr.send(null);
		}
	}
	xhr.onreadystatechange=function(){
		if(xhr.readyState==4){
			if(xhr.status==200){
				obj.success(xhr.responseText);
			}else{
				if(obj.error){
					obj.error("请求失败,失败的状态："+xhr.status+",失败的原因："+xhr.statusText);
				}
			}
		}
	}
}
function promiseAjax(obj){
	var ps= new Promise(function(success,failed){
		var xhr=null;
	if(XMLHttpRequest){
		xhr=new XMLHttpRequest();
	}else{
		xhr=new ActiveXObject("Microsoft.XMLHTTP")
	}
	obj.url=obj.url+"?rand="+new Date().getTime();
	if(obj.method.toLowerCase()=="get"){
		if(obj.data){
			xhr.open("get",obj.url+"&"+params(obj.data));
		}else{
			xhr.open("get",obj.url);
		}
		xhr.send(null);
	}
	if(obj.method.toLowerCase()=="post"){
		xhr.open("post",obj.url);
		xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		if(obj.data){
			xhr.send(params(obj.data));
		}else{
			xhr.send(null);
		}
	}
	xhr.onreadystatechange=function(){
		if(xhr.readyState==4){
			if(xhr.status==200){
				success(xhr.responseText);
			}else{
				failed("请求失败,失败的状态："+xhr.status+",失败的原因："+xhr.statusText);
			}
		}
	}
		
	});
	return ps;
}
